import { get } from "../../utils/request";
import { storeToken, removeStoreToken } from "../../utils/token";
const app = getApp();
//Page是微信小程序的一个内置函数，用于定义一个页面。
//当你浏览到这个页面时，微信小程序会执行这个Page函数，从而创建并显示页面。
Page({
  //定义页的里的状态对象 类似于vue2中的data,对象里的属性可以在模板中直接使用
  data: {
    avatarUrl: app.globalData.defaultAvatarUrl,
    nickname: "",
    avatar: "",
    isLogin: false, //表示当前用户是否登录
  },
  //这是一个页面在加载的时候执行函数
  //它只会在第一次打开此页面的时候执行一次，以后再次跳回来不再执行
  onLoad() {
    wx.showShareMenu({
      withShareTicket: true,
      menus: ["shareAppMessage", "shareTimeline"],
    });
    let user = wx.getStorageSync("user");
    if (user) {
      this.setData({
        ...user,
        isLogin: true,
      });
    }
  },
  //当分享到好友或群的时候会执行此方法获取分享的配置项
  onShareAppMessage() {
    return {
      title: "分享前端面试", //分享的标题
      path: "/pages/index/index", //分享的路径或者说页面
      succes: (res) => {
        console.log("分享成功", res);
      },
      fail: (error) => {
        console.log("分享失败", error);
      },
    };
  },
  onShareTimeline() {
    return {
      title: "自定义分享朋友圈的标题",
      query: "foo=bar",
    };
  },
  async logoutUser() {
    removeStoreToken(); //清除本地保存的token
    wx.removeStorageSync("user"); //清除本地保存的用户
    //清空之后还是要跳转到登录页
    wx.reLaunch({
      url: "/pages/profile/profile",
    });
  },
  async loginUser() {
    try {
      //调用 wx.login() 获取 临时登录凭证code ，并回传到开发者服务器。
      const { code } = await new Promise((resolve, reject) => {
        wx.login({
          success: resolve,
          fail: (error) => {
            console.log(error);
            reject(error);
          },
        });
      });
      //如果成功获取到临时登录凭证code的话
      if (code) {
        //调用开发者服务器的/login接口,通过查询字符串参数传递code
        //token是开发者服务生成的JWT凭证，nickname用户呢称 avatar用户头像
        const {
          data: { token, nickname, avatar },
        } = await get("/login", { data: { code } });
        debugger;
        //把token保存在本地
        storeToken(token);
        if (nickname) {
          this.setData({
            nickname,
            avatar,
            isLogin: true,
          });
          wx.setStorageSync("user", { nickname, avatar });
          wx.showToast({
            title: "登录成功",
            duration: 2000,
          });
        } else {
          //第一次的时候肯定是没有呢称和头像的
          const { confirm } = await wx.showModal({
            title: "登录成功，你尚未完善用户信息",
            content: "请去完善用户信息吧",
            confirmText: "去完善",
          });
          //如果confirm为true的话表示要确认去完善用户信息
          if (confirm) {
            return wx.navigateTo({
              url: "/pages/improve/improve",
            });
          }
        }
      }
    } catch {
      (error) => {
        wx.showToast({
          title: error.message || "登录失败",
          icon: "error",
          duration: 2000,
        });
      };
    }
  },
});
